#ifndef GY_SCALETOFITGROUP_H
#define GY_SCALETOFITGROUP_H

#include "GY_ContainerTransform.h"
#include "GY_ControlLibrary_global.h"
#include "GY_SimpleGroup.h"

class GY_CONTROLLIBRARY_EXPORT GY_ScaleToFitGroup : public GY_ContainerTransform
{
    Q_OBJECT
public:
    explicit Q_INVOKABLE GY_ScaleToFitGroup(const QString &guid,QGraphicsItem *parent = nullptr);
    ~GY_ScaleToFitGroup();
    /**
     * @brief addItem 组中添加图元
     * @param item
     * @return
     */
    bool addItem(GY_Object *pItem) override;
    /**
     * @brief addItemCopy 组中添加图元(复制专用)
     * @param item
     * @return
     */
    bool addItemCopy(GY_Object *pItem);
    /**
     * @brief removItem 移除组中的图元
     * @param guid 图元的guid
     * @return 是否移除成功
     */
    bool removItem(const QString &guid) override;
    /**
     * @brief removItem 移除图元
     * @param pItem 图元指针
     * @return 是否移除成功
     */
    bool removItem(const GY_Object *pItem) override;
    //!继承基类重写
    GY_Object * copyItem(const QString &guid = QString()) override;

private:
    /**
     * @brief m_pSimpleGroup1 移动组
     */
    GY_SimpleGroup* m_pSimpleGroup;

private:
    /**
     * @brief initializationPropertyInfo 初始化属性信息
     */
    void initializationPropertyInfo();
    /**
     * @brief UpdateDraw 更新绘制
     */
    void updateDraw();
    /**
     * @brief setContainerEditPointF 设置编辑点
     */
    void setContainerEditPointF() override;
    /**
     * @brief updatePoint 更新点位1
     * @param name 属性名称
     * @param value 属性值
     * @return 是否更新成功
     */
    bool updatePoint1(const QString &name, const QVariant &value);
    /**
     * @brief updatePoint 更新点位2
     * @param name 属性名称
     * @param value 属性值
     * @return 是否更新成功
     */
    bool updatePoint2(const QString &name, const QVariant &value);

};

#endif // GY_SCALETOFITGROUP_H
